home *** CD-ROM | disk | FTP | other *** search
/ Fritz: All Fritz / All Fritz.zip / All Fritz / FILES / PROGASIC / DATASCRN.LZH / DATASCRN.BAS next >
BASIC Source File  |  1987-09-10  |  3KB  |  133 lines

  1. '***** DATASCRN.BAS *****
  2. ' J.P.Davis - 9/10/87
  3.  
  4. %max=100
  5. DIM var#(1:%max),row%(1:%max),col%(1:%max),l$(1:24)
  6. CLS:SCREEN 0:COLOR 14:LOCATE 1,1,1
  7. INPUT "Screen Filespec...";nam$
  8. CLS
  9. OPEN nam$ FOR INPUT as #1
  10. DO
  11.    INCR r%
  12.    LINE INPUT #1,l$(r%)
  13.    PRINT l$(r%)
  14.    DO
  15.       c%=INSTR(c%+1,l$(r%),":")
  16.       IF c% THEN k%=k%+1:row%(k%)=r%:col%(k%)=c%
  17.    LOOP UNTIL c%=0
  18. LOOP UNTIL eof(1)
  19. CLOSE #1
  20. rmax%=r%:kmax%=k%
  21.  
  22. ON ERROR GOTO handler
  23.  
  24. RESTORE
  25. FOR i%=1 TO kmax%
  26.    READ vv#
  27.    var#(i%)=vv#
  28.    LOCATE row%(i%),col%(i%)+1
  29.    PRINT fnp$(var#(i%))
  30. NEXT i%
  31.  
  32. begin:
  33. CALL editor
  34. GOTO calc
  35.  
  36. SUB editor
  37.    SHARED k%,kmax%,row%(),col%(),var#()
  38.    LOCATE 24,1:PRINT "Make revisions - Press <ESC> when done...";
  39.    k%=1:LOCATE row%(k%),col%(k%)+1
  40.    DO
  41.       row%=csrlin:col%=pos(0)
  42.       j%=col%
  43.       WHILE not INSTAT
  44.       WEND
  45.       a$=INKEY$
  46.       IF len(a$)=2 THEN
  47.          SELECT CASE asc(right$(a$,1))
  48.          CASE 72
  49.             IF k%=1 THEN k%=kmax% ELSE k%=k%-1
  50.             LOCATE row%(k%),col%(k%)+1
  51.          CASE 80
  52.             IF k%<kmax% THEN k%=k%+1 ELSE k%=1
  53.             LOCATE row%(k%),col%(k%)+1
  54.          CASE 75
  55.             IF col%=col%(k%)+1 THEN col%=col%(k%)+2
  56.             LOCATE ,col%-1
  57.          CASE 77
  58.             IF col%=79 THEN col%=78
  59.             LOCATE ,col%+1
  60.          CASE 71
  61.             k%=1
  62.             LOCATE row%(k%),col%(k%)+1
  63.          CASE 79
  64.             k%=kmax%
  65.             LOCATE row%(k%),col%(k%)+1
  66.          CASE ELSE
  67.          END SELECT
  68.       ELSE
  69.          SELECT CASE asc(a$)
  70.          CASE 32,40 TO 57,68,69,100,101
  71.             PRINT a$;
  72.             DO
  73.                INCR j%
  74.                IF SCREEN(row%,j%)<>32 THEN PRINT " ";
  75.             LOOP UNTIL SCREEN(row%,j%+1)=32
  76.             LOCATE row%,col%+1
  77.          CASE 8
  78.             LOCATE ,col%-1
  79.             PRINT " ";
  80.             LOCATE ,col%-1
  81.          CASE ELSE
  82.          END SELECT
  83.       END IF
  84.    LOOP UNTIL a$=chr$(27)
  85.    FOR k%=1 TO kmax%
  86.       s$=""
  87.       FOR c%=col%(k%)+1 TO 79
  88.          a%=SCREEN(row%(k%),c%)
  89.          c$=chr$(a%)
  90.          s$=s$+c$
  91.       NEXT c%
  92.       var#(k%)=val(s$)
  93.    NEXT k%
  94.    LOCATE 24,1:PRINT space$(79);
  95.    COLOR 13:LOCATE 24,1:PRINT "Press any key to begin calculation...";:COLOR 14
  96.    WHILE not INSTAT
  97.    WEND
  98.  
  99. END SUB
  100.  
  101. SUB show
  102.    SHARED l$(),var#(),row%(),col%(),rmax%,kmax%
  103.    CLS
  104.    FOR r%=1 TO rmax%
  105.       PRINT l$(r%)
  106.    NEXT r%
  107.    FOR k%=1 TO kmax%
  108.       LOCATE row%(k%),col%(k%)+1
  109.       PRINT fnp$(var#(k%))
  110.    NEXT k%
  111.    LOCATE row%(1),col%(1)+1
  112. END SUB
  113.  
  114. DEF fnp$(x)
  115. IF x=0 THEN
  116.    PRINT x;
  117. ELSEIF abs(x)>1E6 THEN
  118.    PRINT USING "-#.#####^^^^";x;
  119. ELSE
  120.    PRINT int(x*(10^(5-int(log10(abs(x)))))+.5)/(10^(5-int(log10(abs(x)))));
  121. END IF
  122. fnp$=""
  123. END DEF
  124.  
  125. handler:
  126. RESUME begin
  127.  
  128. calc:
  129. ON ERROR GOTO 0
  130. CLS
  131. ' Main program starts here...
  132.  
  133.